A well-known method for interacting with a database is to use the Structured Query Language (SQL). To extract information from the database, questions in the form of SELECT statements are asked to the database. Basically, the answer to a SELECT statement is a number of data records forming a table.
One disadvantage of SQL is that it presupposes knowledge about the tabular structure of the database. More particularly, the user has to state in the SELECT statement which tables the information is to be retrieved from. For instance, assume that the database comprises information about clothes and that the information is stored in two tables, the first table of which comprises the types of clothes and the sizes thereof, and the second table of which comprises the types of clothes and the prices. To extract all types of clothes having a predetermined size and a predetermined price, a complicated SELECT statement specifying the names of the two tables and of the fields of the tables including the types of clothes, the prices and the sizes, as well as the value of the predetermined price and the predetermined size, has to be used.
Furthermore, when the information to be retrieved is present in a column of which the data element values are not indexed, the column has to be searched linearly, which results in long response times when the column includes many data element values. This is a serious drawback, especially when the database is a commercial one and the user pays for the time during which he is connected to the database.